﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Poligas_ERP.Classes;
using ModeloDesenvolvimento;

/*ESCRITO DIA 04/01/2012*/
namespace Poligas_ERP.Forms
{
    public partial class FrmSituacoes : Form
    {
        Situacoes situacoes = new Situacoes();
        DataTable dtSituacoes = new DataTable();
        DataTable dtRetornaLista = new DataTable();
        int idSituacoes = 0;

        Util util = new Util();

        public FrmSituacoes()
        {
            InitializeComponent();
        }

        private void FrmSituacoes_Load(object sender, EventArgs e)
        {
            dgvSituacoes.AutoGenerateColumns = false;
            HabilitarControlesIniciais(true);
            LimparCampos();
            txtPesquisar.Focus();
            CarregaTipoSituacoes();
            LocalizarDados();

        }
        private void FrmSituacoes_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Return)
            {
                SendKeys.Send("{TAB}");
            }
        }
        private void FrmSituacoes_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == (char)13)
            {
                e.Handled = true;
            }
        }
        private void dgvSituacoes_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if(dgvSituacoes.CurrentRow != null)
                RecuperarDadosPorCodigo();
        }
        private void txtPesquisar_TextChanged(object sender, EventArgs e)
        {
            LocalizarDados();
        }

        private void LocalizarDados()
        {
            dgvSituacoes.DataSource = situacoes.LocalizarDados(txtPesquisar.Text);
            btnEditar.Enabled = dgvSituacoes.Rows.Count > 0;
            btnExcluir.Enabled = btnEditar.Enabled;

            // RecuperarDadosPorCodigo();
        }
        private void RecuperarDadosPorCodigo()
        {
            //if(dgvSituacoes.CurrentRow != null)

            Int32 CodSituacoes = Convert.ToInt32(dgvSituacoes.SelectedRows[0].Cells[0].Value);

            dtRetornaLista = situacoes.RecuperarDadosPorCodigo(CodSituacoes);

            if(dtRetornaLista.Rows.Count > 0)
            {
                idSituacoes = Convert.ToInt32(dtRetornaLista.Rows[0]["CodSituacao"]);
                txtCodigo.Text = Convert.ToString(idSituacoes);
                cmbTipoSituacao.SelectedValue = dtRetornaLista.Rows[0]["CodTiposSituacao"].ToString();

                txtDescricao.Text = dtRetornaLista.Rows[0]["Descricao"].ToString();
                ckbAtivo.Checked = Convert.ToBoolean(dtRetornaLista.Rows[0]["Ativo"]);
            }
            dtRetornaLista = null;


        }
        private void CarregaTipoSituacoes()
        {
            dtSituacoes = situacoes.CarregaTipoSituacoes();

            if(dtSituacoes.Rows.Count > 0)
            {
                cmbTipoSituacao.DataSource = dtSituacoes;
                cmbTipoSituacao.DisplayMember = "Descricao";
                cmbTipoSituacao.ValueMember = "CodTiposSituacao";
            }
        }
        private void LimparCampos()
        {
            txtPesquisar.Clear();
            txtCodigo.Clear();
            txtDescricao.Clear();
            ckbAtivo.Checked = true;
            cmbTipoSituacao.SelectedIndex = -1;
        }
        private void HabilitarControlesIniciais(bool status)
        {
            gbxGrid.Enabled = status;
            gbxDados.Enabled = !status;
            HabilitarBotoes(status);

        }
        private void HabilitarBotoes(bool status)
        {
            btnNovo.Enabled = status;
            btnEditar.Enabled = status;
            btnExcluir.Enabled = status;
            btnGravar.Enabled = !status;
            btnCancelar.Enabled = !status;
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(false);
            txtDescricao.Focus();
        }
        private void btnEditar_Click(object sender, EventArgs e)
        {
            HabilitarControlesIniciais(false);
            txtDescricao.Focus();
        }
        private void btnGravar_Click(object sender, EventArgs e)
        {
            if(string.IsNullOrEmpty(txtCodigo.Text.Trim()))
            {
                if(situacoes.Inserir(ckbAtivo.Checked, txtDescricao.Text, 
                    Convert.ToInt32(cmbTipoSituacao.SelectedValue.ToString())) == false)
                {
                    util.Aviso("Registro Inserido com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao inserir Registro");
                    /*Int32 CodTiposSituacao, String Descricao, Char Ativo*/
                }
            }
            else
            {
                Int32 CodSituacao = Convert.ToInt32(dgvSituacoes.SelectedRows[0].Cells[0].Value);
                if(situacoes.Alterar(CodSituacao,ckbAtivo.Checked, txtDescricao.Text, 
                    Convert.ToInt32(cmbTipoSituacao.SelectedValue.ToString()))==false)
                {
                    util.Aviso("Registro Atualizado com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Atualiar Registro");
                    /*Int32 CodTiposSituacao, String Descricao, Char Ativo*/
                }
            }
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();

        }
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            string pergunta = "Desena Excluir o Registro?";

            if(idSituacoes <= 0)
            {
                util.Aviso("Selecione um arquivo para Exclusão");
                return;
            }
            if(util.Decide(pergunta, true))
            {
                Int32 CodSituacao = Convert.ToInt32(dgvSituacoes.SelectedRows[0].Cells[0].Value);

                if(situacoes.Excluir(CodSituacao))
                    util.Aviso("Arquivo Excluido com Sucesso");
                else
                    util.Aviso("Erro ao Excluir");
            }
            LimparCampos();
            LocalizarDados();
        }
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(true);
            LocalizarDados();
        }

    }
}
